package com.SmartCare.service.medicine;

import com.baomidou.mybatisplus.extension.service.IService;
import com.SmartCare.common.Result;
import com.SmartCare.common.dto.medicine.MedicineDTO;
import com.SmartCare.pojo.medicine.MedicationList;

public interface MedicationListService extends IService<MedicationList> {
    /**
     * 具体药物记录添加
     */
    Result medicineAdd(MedicineDTO medicineDTO, String listId);

    /**
     * 根据老人id获取老人的正在服用的药单记录
     * @param elderId 老人id
     * @return 返回根据药单编号分组的药单记录
     */
    Result getListsByElderId(Long elderId);

    /**
     * 根据老人id获取所有的药单记录并根据药单编号分组
     * @param elderlyId 老人id
     * @return 返回分组后的药单项数据
     */
    Result getAllById(Long elderlyId);

    /**
     * 获取养老院匹配的药单记录
     * @param careHomeName 养老院名称
     * @param keyword 老人姓名模糊查询
     * @return 返回根据药单编号分组后的记录
     */
    Result getAll(String careHomeName, String keyword);

    /**
     * 管理端添加药单项
     * @param medicationList 药单项对象
     * @return 返回药单编号
     */
    Result addOption(MedicationList medicationList);

    /**
     * 根据id更新药单项
     * @param medicationList 药单项对象
     * @return 不返回数据
     */
    Result updateOption(MedicationList medicationList);

    /**
     * 根据id删除药单项
     * @param id 药单项的id
     * @return 不返回数据
     */
    Result delete(Long id);

    /**
     * 根据药单编号批量删除药单项
     * @param listNum 药单编号
     * @return 不返回数据
     */
    Result deleteBatch(Long listNum);

    /**
     * 根据老人id删除该老人的所有药单项
     * @param elderId 老人id
     * @return 不返回数据
     */
    Result deleteByElder(Long elderId);
}
